/*
 * To cange this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import model.dto.acao.AcaoLoteSementeDTO;

/**
 *
 * @author Gabriel
 */
public class AcaoLoteSementeDAO extends DAO {
    // TODO: Refazer esse select
    private final String SELECT_ACAO_LOTE_SEMENTE =   "SELECT a.Id,\n"
                                                    + "       a.Id_Lote_Semente,\n"
                                                    + "       a.Id_Acao\n"
                                                    + "       al.Nome,\n"
                                                    + "       al.Descricao\n"
                                                    + "       a.Data,\n"
                                                    + "       a.Produto_Usado,\n"
                                                    + "       a.Quantidade_Produto,\n"
                                                    + "       a.Peso_Atual,\n"
                                                    + "       a.Observacao,\n"
                                                    + "       a.Usuario_Responsavel\n"
                                                    + "FROM Acao a, Acao_Lote al\n"
                                                    + "WHERE a.Id_Acao = al.Id and a.Id_Lote_Semente = ";

    public AcaoLoteSementeDAO() throws SQLException, ClassNotFoundException {
        super();
    }

    public void persisteAcaoLoteSemente(AcaoLoteSementeDTO acaoLoteSementeDTO) throws SQLException {

        sql = "INSERT INTO Acao(Id_Lote_Semente,Id_Acao,Data,Produto_Usado,Quantidade_Produto,Peso_Atual,Observacao,Usuario_Responsavel)"
            + "VALUES ("+acaoLoteSementeDTO.getIdLoteSemente()+","
                        +acaoLoteSementeDTO.getIdTipoAcao()+","
                        +acaoLoteSementeDTO.getData()+","
                        +acaoLoteSementeDTO.getProdutoUsado()+","
                        +acaoLoteSementeDTO.getQuantidadeProduto()+","
                        +acaoLoteSementeDTO.getPesoAtual()+","
                        +acaoLoteSementeDTO.getObservacao()+","
                        +acaoLoteSementeDTO.getUsuarioResponsavel()+");";

        connector.executeInsertQuery(sql);
    }

    private AcaoLoteSementeDTO getAcaoLoteSementeResultSet(ResultSet rs) throws SQLException {
        AcaoLoteSementeDTO acaoLoteSementeDTO = new AcaoLoteSementeDTO();
        acaoLoteSementeDTO.setId(rs.getInt("Id"));
        acaoLoteSementeDTO.setIdLoteSemente(rs.getInt("Id_Lote_Semente"));
        acaoLoteSementeDTO.setTipoAcao(rs.getString("Id_Tipo_Acao"), rs.getString("Nome_Tipo_Acao"), rs.getString("Descricao_Tipo_Acao"));
        acaoLoteSementeDTO.setData(rs.getDate("Data"));
        acaoLoteSementeDTO.setProdutoUsado(rs.getString("Produto_Usado"));
        acaoLoteSementeDTO.setQuantidadeProduto(rs.getDouble("Quantidade_Produto"));
        acaoLoteSementeDTO.setPesoAtual(rs.getDouble("Peso_Atual"));
        acaoLoteSementeDTO.setObservacao(rs.getString("Observacao"));
        acaoLoteSementeDTO.setUsuarioResponsavel(rs.getString("Usuario_Responsave"));
        return acaoLoteSementeDTO;
    }

    private LinkedList<AcaoLoteSementeDTO> getAcoesLoteSementeResultSet(ResultSet rs) throws SQLException {
        LinkedList<AcaoLoteSementeDTO> acaoLoteSementeDTOs = new LinkedList<AcaoLoteSementeDTO>();
        while (rs.next()) {
            acaoLoteSementeDTOs.add(getAcaoLoteSementeResultSet(rs));
        }
        return acaoLoteSementeDTOs;
    }

    public LinkedList<AcaoLoteSementeDTO> getAcoesLoteSemente(Integer idLoteSemente) throws SQLException {
        sql += SELECT_ACAO_LOTE_SEMENTE + idLoteSemente + ";";
        connector.executeSelectQuery(sql);
        return getAcoesLoteSementeResultSet(resultSet);
    }
}
